1000E - We Need More Bosses - CodeForces Solution


dfs and similar graphs trees *2100

Please click on ads to support us..

C++ Code:

/*
	www.youtube.com/YugiHackerChannel
	oj.vnoi.info/user/YugiHackerKhongCopCode
*/
#include<bits/stdc++.h>
#define el cout<<"\n"
#define f0(i,n) for(int i=0;i<n;++i)
#define f1(i,n) for(int i=1;i<=n;++i)
#define maxn 300005
using namespace std;

int n, m;
vector <int> a[maxn];
int ans, id[maxn], low[maxn], cnt, in[maxn], cc;
stack <int> s;

void dfs(int u, int p = -1)
{
    low[u] = id[u] = ++cnt;
    s.push(u);
    for (int v:a[u]) if (v != p)
    {
        if (id[v]) low[u] = min(low[u], id[v]);
        else
        {
            dfs(v, u);
            low[u] = min(low[u], low[v]);
        }
    }
    if (low[u] == id[u])
    {
        cc++;
        while (1)
        {
            int v = s.top();
            s.pop();
            in[v] = cc;
            if (v == u) break;
        }
    }
}

vector <int> b[maxn];
int h[maxn];
void dfs_tree(int u, int p = -1)
{
    for (int v:b[u]) if (v != p)
    {
        h[v] = h[u] + 1;
        dfs_tree(v, u);
    }
}

main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin >> n >> m;
    f1 (i, m)
    {
        int u, v; cin >> u >> v;
        a[u].push_back(v);
        a[v].push_back(u);
    }
    dfs(1);
    f1 (u, n)
    {
        for (int v:a[u]) if (low[v] > id[u])
        {
            b[in[v]].push_back(in[u]);
            b[in[u]].push_back(in[v]);
        }
    }
    dfs_tree(1);
    int root = max_element(h+1, h+cc+1) - h;
    memset(h, 0, sizeof h);
    dfs_tree(root);
    cout << *max_element(h+1, h+cc+1);
}


Comments

Submit
0 Comments
More Questions

1278B - A and B
1353D - Constructing the Array
1269C - Long Beautiful Integer
1076A - Minimizing the String
913C - Party Lemonade
1313A - Fast Food Restaurant
681A - A Good Contest
1585F - Non-equal Neighbours
747A - Display Size
285A - Slightly Decreasing Permutations
515C - Drazil and Factorial
1151E - Number of Components
1151F - Sonya and Informatics
556A - Case of the Zeros and Ones
867A - Between the Offices
1569A - Balanced Substring
260A - Adding Digits
1698C - 3SUM Closure
1029B - Creating the Contest
1421A - XORwice
1029A - Many Equal Substrings
1675D - Vertical Paths
1271C - Shawarma Tent
805A - Fake NP
1163A - Eating Soup
787A - The Monster
807A - Is it rated
1096A - Find Divisible
1430C - Numbers on Whiteboard
1697B - Promo